package com.application.model.gobierno.caba.retrieve;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.application.model.gobierno.caba.entities.ManagerGobCabaColegio;

public class RetrieveGobCABADetalle extends RetrieveGobCABARegex {

	
    public RetrieveGobCABADetalle(ManagerGobCabaColegio	manager) {
    	super(manager);
    }
    @Override
    public void processContent(String data, String parentName) {
        String 		nombreColegio = "";
        String 		niveles = "";
        String 		telefonos = "";
        String 		email = "";
        String 		descripcion = "";
        
        String 		jornadaNivel = "";
        
        	
        	nombreColegio = getAtributo(data,"Nombre:(.*?)<br />",new Integer[]{1},true);
            niveles = getAtributo(data,"Ofertas:</strong>(.*?)</tr>",new Integer[]{1},true);
            telefonos = getAtributo(data,"Tel.:</strong>(.*?)<br(.*?)Dependencia",new Integer[]{1},true);
            email = getAtributo(data,"E-mail:</strong>(.*?)mailto:(.*?)\">",new Integer[]{2},true);
            descripcion = getAtributo(data,"</td><td width=\"50%\" valign=\"top\">(.*?)</tr>(.*?)<td colspan=\"2\">(.*?)</tr>",new Integer[]{1,3},true);
            jornadaNivel = getAtributo(data,"</td><td width=\"50%\" valign=\"top\">(.*?)</tr>(.*?)<td colspan=\"2\">(.*?)</tr>",new Integer[]{3},true);
            if(niveles.isEmpty()){
            	logger.error("");
            }
            if(telefonos.isEmpty()){
            	logger.error("");
            }
            if(email.isEmpty()){
            	logger.error("");
            }
            
			procesarDetalles(nombreColegio,niveles,telefonos,email,descripcion);
        	generarTipo(nombreColegio, jornadaNivel);
        	
        if(nombreColegio.isEmpty()&&niveles.isEmpty()&&telefonos.isEmpty()&&email.isEmpty()&&descripcion.isEmpty()){
        	logger.error("La busqueda no fue encontrada");
        }
    }
    private String getAtributo(String data,String regex,Integer[] grupoIds,Boolean unaVuelta){
    	Pattern     pattern = null;
        Matcher     matcher = null;
        String		value = "";
        
        pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE|Pattern.MULTILINE|Pattern.DOTALL|Pattern.UNICODE_CASE|Pattern.UNIX_LINES);
        matcher = pattern.matcher(data);
        
        while (matcher.find()) {
        	for (Integer id : grupoIds) {
				value+=matcher.group(id);
			}
        	if(unaVuelta){
        		break;
        	}
        }
        return value;
    }
    
    private void procesarDetalles(String nombreColegio, String niveles, String telefonos, String email, String descripcion) {
		generarNiveles(nombreColegio,niveles);
		generarTelefono(nombreColegio, telefonos);
		generarEmail(nombreColegio, email);
		generarDescripcion(nombreColegio, descripcion);
		logger.debug("detalle: nombre "+nombreColegio+" niveles "+niveles+" telefonos "+telefonos+" email "+email+" descripcion size "+descripcion.length());
	}

    private void generarDescripcion(String nombreColegio, String descripcion) {
    	manager.addDescripcion(nombreColegio,descripcion);		
	}

	private void generarEmail(String nombreColegio, String email) {
		manager.addEmail(nombreColegio,email);		
	}

	private void generarTelefono(String nombreColegio, String telefonos) {
		telefonos = telefonos.replace("<br />", "");
//		telefonos = telefonos.replace("", "");
		telefonos = telefonos.trim();
    	manager.addTelefono(nombreColegio,telefonos);
    }
	private void generarNiveles(String nombreColegio, String niveles) {
		generarTipo(nombreColegio, niveles);
	}

}
